<?php
/**
 * Load class	
 * 
 * @author Renan Abreu <renanhabreu@gmail.com>
 * @package Nucleo
 * @subpackage Nucleo.Load
 * @copyright 2009 Renan Abreu
 */
abstract class Nucleo_Load_Class {
	static private $defined = false;
	
	static public function defineFrameworkPath($local){
		define('LOCAL_FRAMEWORK',$local);
	}
	
	static public function defineConstant(){
		if(!self::$defined){
			self::$defined = true;
			
			/**
			*framework location
			*/
			if(!defined("LOCAL_FRAMEWORK"))
				die('SIFRAPHP_ERROR : LOCAL_FRAMEWORK not defined') ;
						
			
		}//if !self::defined	
	}
}

/**
*			 FUNCAO AUTOLOAD PARA AS CLASSES DA APLICACAO            
*			 Caso ja exista uma funcao autoload implementada         
* 			 em seu sistema, insira esta funcao dentro de            
*			 sua implementacao						                 
*/
function SIFRA__autoload($class){
	Nucleo_Load_Class::defineConstant();
	$map_path = LOCAL_FRAMEWORK.str_replace('_','/',$class).'.php';
		
	if(file_exists($map_path))
		require($map_path);
	else{
		if(Nucleo_Load_Model::findClass($class) === false){
			if(Nucleo_Load_Component::findClass($class) === false){
				throw new Nucleo_Exception_Load($class);
				exit();
			}
		}			
	}
}

if ( !function_exists("__autoload") ) {

	function __autoload($class){
		SIFRA__autoload($class);
	}
}
?>